from collections import OrderedDict

from apps.goods.models import GoodsChannel
#1.定义有序字典
    #2.查询所有的频道信息
    #3.对所有的频道进行遍历
    #4.获取当前频道的group_id(获取当前频道)
    #5.判断当前频道是否在有序字典中
    #6.获取当前的分类,将当前分类添加到频道中channels
    #7. 通过当前分类获取子分类以及子子分类添加到sub_cats中


    # 1.定义有序字典
    # {
    #   '1': {
    #       'channels':[],
    #        'sub_cats':[]
    #       }
    # }


def get_categories():
    """提供首页广告界面"""
    # 查询商品频道和分类
    categories = OrderedDict()
    channels = GoodsChannel.objects.order_by('group_id', 'sequence')
    for channel in channels:
        group_id = channel.group_id  # 当前组

        if group_id not in categories:
            categories[group_id] = {'channels': [], 'sub_cats': []}

        cat1 = channel.category  # 当前频道的类别

        # 追加当前频道
        categories[group_id]['channels'].append({
            'id': cat1.id,
            'name': cat1.name,
            'url': channel.url
        })
        # 构建当前类别的子类别
        for cat2 in cat1.subs.all():
            cat2.sub_cats = []
            for cat3 in cat2.subs.all():
                cat2.sub_cats.append(cat3)
            categories[group_id]['sub_cats'].append(cat2)

    return categories

# def get_breadcrumb(cat):
#     # cat 传递过来的是一个 三级分类
#
#     # 组织面包屑数据
#     """
#     {
#         cat1:一级分类内容,
#         cat2:二级分类内容,
#         cat3:三级分类内容
#     }
#     """
#
#     return {
#         'cat1':cat.parent.parent,
#         'cat2':cat.parent,
#         'cat3':cat
#     }

def get_breadcrumb(cat):
    # cat 不知道是几级分类
    breadcrumb = {
        'cat1':'',
        'cat2':'',
        'cat3':''
    }

    if cat.parent is None:
        # 分类没有父分类,肯定是一级分类
        breadcrumb['cat1']=cat
    elif cat.subs.count() == 0:
        #没有子类了,就是三级
        breadcrumb['cat3']=cat

        breadcrumb['cat2']=cat.parent

        breadcrumb['cat1']=cat.parent.parent
    else:
        breadcrumb['cat2']=cat
        breadcrumb['cat1']=cat.parent


    return breadcrumb